记一下我容易忘记的一些细节上的小知识。持续更新。
Things to Remember
push&pop
每次都把push
和pop
中指针移动和数据移动的先后关系搞倒了。
汇编语言PUSH和POP指令(压栈和出栈) (biancheng.net)
PUSH
指令首先减少 ESP
的值,再将源操作数复制到堆栈。操作数是 16 位的,则 ESP
减 2,操作数是 32 位的,则 ESP
减 4。
所以说push
完之后,esp
指针将正好指向刚刚push
的数据上。于是乎mov eax, [esp]
取的就是刚刚所push
的值。
POP
指令首先把 ESP
指向的堆栈元素内容复制到一个 16 位或 32 位目的操作数中,再增加 ESP
的值。
- 本文作者: Taardis
- 本文链接: https://taardisaa.github.io/2022/03/09/Things to Remember/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!